package com.mm.cloud.lease.vo.income.preview;

import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 账单预览-周期明细 VO
 * 用途：描述单个缴费周期的应收、起止日期与子项明细。
 * 字段说明：
 * - paySeq：缴费顺序号（1开始递增）。
 * - startValidDate/endValidDate：该周期覆盖的开始/结束时间。
 * - payDate：建议应付日期（期末减提前天数），不早于期初。
 * - periodAmount：该周期应收合计（房租+押金+其他）。
 * - subItems：子项明细，见 TenantSubIncomePreviewVO。
 */
@Data
public class TenantIncomePreviewPeriodVO implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /** 缴费顺序号（1开始递增） */
    private Integer payCount;

    /** 有效期间隔-年 */
    private Integer validYear;

    /** 有效期间隔-月 */
    private Integer validMonth;

    /** 有效期间隔-天 */
    private Integer validDay;

    /** 周期覆盖的开始时间 */
    private LocalDateTime startValidDate;

    /** 周期覆盖的结束时间 */
    private LocalDateTime endValidDate;

    /** 建议应付日期（期末-提前天数，不早于期初） */
    private LocalDateTime payDate;

    /** 该周期应收合计（房租+押金+其他） */
    private BigDecimal payMoney;

    /** 欠费金额（默认=应收） */
    private BigDecimal debtMoney;

    /** 缴费状态 1-未收 2-收部分 3-已收完 4-坏账（默认1） */
    private Byte payStatus;

    /** 已生成流水金额（默认0） */
    private BigDecimal financeMoney;

    /** 未生成流水金额（默认=应收） */
    private BigDecimal unfinanceMoney;

    /** 滞纳金（默认0） */
    private BigDecimal lateFeeMoney;

    /** 减免滞纳金（默认0） */
    private BigDecimal breakLateFeeMoney;

    /** 是否坏账 1-否 2-是（默认1-否） */
    private Byte isBadDebt;

    /** 是否催收短信 1-否 2-是（默认1-否） */
    private Byte isSendSms;

    /** 创建人ID（预览取当前登录人） */
    private Long createrId;

    /** 创建时间（预览取当前时间） */
    private LocalDateTime createTime;

    /** 删除标记 0-未删除 1-删除（默认0） */
    private Byte isDelete;

    /** 子项明细列表 */
    private List<TenantSubIncomePreviewVO> subItems;
}


